import axios from "axios"
import Vue from "vue"
import qs from "querystring"
import { Toast } from "vant"

//1.环境
if (process.env.NODE_ENV === "development") {
    Vue.prototype.$pre = "http://192.168.0.107:9001"
} else {
    Vue.prototype.$pre = ""
}

// 2.请求拦截
axios.interceptors.request.use(req => {
    //每次请求都要做的逻辑
    // 如果请求的接口不是登录，那么就要携带请求头
    if (req.url !== '/api/userlogin') {
        req.headers.authorization = localStorage.getItem("token")
    }
    return req;
})

// 3.响应拦截
axios.interceptors.response.use(res => {

    // 打印数据 
    // console.group("本次请求地址：" + res.config.url)
    // console.log(res);
    // console.groupEnd()

    // 统一失败弹内容
    if (res.status !== 200) {
        Toast(res.message)
    }

    // //统一掉线处理
    // if (res.data.msg == "登录已过期或访问权限受限") {
    //     //清空userInfo changeUserInfo({})
    //     store.dispatch("changeUserInfo", {})
    //     // 跳转页面
    //     router.replace("/login")
    // }

    //每次响应都要做的逻辑??????
    return res;
})

/**
 * 
 * @param {*} url :请求地址
 * @param {*} params 请求参数，默认是{}
 * @returns axios
 * @eg: const reqLogin=(user)=>get("/login",user)
 */
export const get = (url, params = {}) => {
    return axios({
        url,
        method: "get",
        params,
    })
}


/**
 * 
 * @param {*} url :请求地址
 * @param {*} params 请求参数，默认是{}
 * @returns axios
 * @eg: const reqLogin=(user)=>get("/login",user)
 */
 export const getPath = (url, params) => {
    return axios({
        url:url + "/" + params,
        method: "get",
    })
}


/**
 * 
 * @param {*} url :请求地址
 * @param {*} data 请求参数，默认是{}
 * @param {*} isFile 判断是否有文件，如果有文件，就传true,没有不用传。
 * @returns axios
 * @eg: const reqLogin=(user)=>post("/login",user)
 */
export const post = (url, data = {}, isFile = false) => {
    let params = null;
    if (isFile) {
        //有文件
        params = new FormData()
        for (let key in data) {
            params.append(key, data[key])
        }
    } else {
        //无文件
        params = qs.stringify(data)
    }
    return axios({
        url,
        method: "post",
        data: params
    })
}